home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / bbs_util / wmch11.zip / WMCHAT1.MOD < prev    next >
Text File  |  1996-04-05  |  20KB  |  662 lines

  1. ┌───────────────────────────────────────────────────────────────────────────┐
  2. │ Mod Name: WMCHAT1.MOD                                                     │
  3. │ WWIV version: 4.24a                                                       │
  4. │ Difficulty: Medium.                                                       │
  5. │ Date: 3/7/96                                                              │
  6. │ Modifies: BBS.C, BBSUTL1.C, COM.C, INSTMSG.C, LILO.C, MMENU.C, MULTINST.C,│
  7. │           UTILITY.C, VARS.H, and MAKEFILE.MAK.                            │
  8. │ Author: Pug, 1@11750 (WWIVnet), 1@1 (IsleLink), pug@sorcererisle.com      │
  9. └───────────────────────────────────────────────────────────────────────────┘
  10.  
  11.   I STRONGLY, STRONGLY, STRONGLY, STRONGLY SUGGEST YOU READ THE WMCHAT.DOC
  12.                       FILE BEFORE INSTALLING THIS!!!!
  13.  
  14. Legend:
  15. .______________________.
  16. | == | Existing code   |
  17. | ++ | Add this line   |
  18. | -- | Remove this line|
  19. | =+ | Change this line|
  20. .----------------------.
  21.  
  22. Step 1:  BACK UP YOUR SOURCE CODE!
  23.  
  24. Step 2:  Get yourself a beer.
  25.  
  26. Step 3:  Open INSTMSG.C
  27.  
  28.          Replace handle_inst_msg() with the following function:
  29.  
  30. int handle_inst_msg(inst_msg_header *ih, unsigned char *msg)
  31. {
  32.   unsigned short i, num_char = 0;
  33.   int count, spot, temp, first_time=1, aok;
  34.   char xl[81], cl[81], atr[81], cc;
  35.   userrec u;
  36.  
  37.   if ((!ih) || ((ih->msg_size>0) && (msg==NULL)))
  38.     return(-1);
  39.  
  40.   switch (ih->main) {
  41.     case INST_MSG_STRING:
  42.     case INST_MSG_SYSMSG:
  43.      if ((ih->msg_size>0) && useron && (!hangup)) {
  44.        savel(cl, atr, xl, &cc);
  45.        if (!in_chatroom) nln(2);
  46.        read_user(ih->from_user,&u);
  47.        i = 0;
  48.        if (!in_chatroom) {
  49.          aok = okansi();
  50.          /* Beware of line-wrap! */
  51.          if (aok)
  52.            npr("7┌───────────────┬────────────────────────────────────────────────────────────┐\r\n");
  53.          else
  54.            npr("7+---------------+------------------------------------------------------------+\r\n");
  55.          if (ih->main==INST_MSG_SYSMSG)
  56.              npr("%sSYSTEM MESSAGE %s", (aok ? "7│6" : "|"),
  57.                 (aok ? "7│6" : "|"));
  58.          else 
  59.              npr("%s%-10.10s 8(%d%1d8) %s", (aok ? "7│1" : "|"),
  60.                                                nam(&u,ih->from_user),
  61.                                                ih->from_inst, ih->from_inst,
  62.                                                (aok ? "7│9" : "|"));
  63.          while(i<strlen(msg)) {
  64.            if(!first_time) npr("%s%s%s", (aok ? "7│" : "|"),
  65.                            charstr(15, ' '), (aok ? "7│9" : "|"));
  66.            else first_time=0;
  67.  
  68.            num_char = 0; 
  69.            spot = i + 59;  
  70.            temp = i; 
  71.           
  72.            for(count = (temp + 59); count >= temp; count--)
  73.              if(msg[count] == ' ') {
  74.                spot = count;
  75.                break;
  76.              }
  77.               
  78.            if((ih->msg_size - i) < 59) spot = ih->msg_size;
  79.              else num_char++;  
  80.            while(msg[i] == ' ') i++;
  81.            temp = i; 
  82.            for(count = 1; count <= (spot - temp); count++) {
  83.              outchr(msg[i++]);
  84.              num_char++;
  85.            }
  86.          
  87.            outstr(charstr(61-num_char,' '));
  88.            npr("%s\r\n", (aok ? "7│" : "|"));
  89.          }
  90.          /* Beware of line-wrap! */
  91.          if(aok)
  92.            npr("7└───────────────┴────────────────────────────────────────────────────────────┘\r\n");
  93.          else 
  94.            npr("7+---------------+------------------------------------------------------------+\r\n");
  95.   } else {
  96.        i=0;
  97.        nl();
  98.        while (i<ih->msg_size)
  99.          outchr(msg[i++]);
  100.      }
  101.      nl();
  102.      restorel(cl, atr, xl, &cc);
  103.    }
  104.  break;
  105.  /* Handle this one in process_inst_msgs */
  106.     case INST_MSG_SHUTDOWN:
  107.     default:
  108.       break;
  109.   }
  110.   return(ih->main);
  111. }
  112.  
  113.          Save INSTMSG.C
  114.  
  115. Step 4:  Open MULTINST.C
  116.  
  117.          Replace make_inst_str() and multi_instance() with the following
  118.          functions:
  119.  
  120. void make_inst_str(short wi, unsigned char *ss)
  121. {
  122.   instancerec ir;
  123.   userrec ur;
  124.   unsigned char s[161],s1[81],s2[81];
  125.  
  126.   d = wmchat_str;
  127.   get_inst_info(wi, &ir);
  128.   sprintf(s,"1%-3d",wi);
  129.  
  130.   if ((ir.user < syscfg.maxusers) && (ir.user > 0)) {
  131.     if (ir.flags & INST_FLAGS_ONLINE) {
  132.       read_user(ir.user,&ur);
  133.       sprintf(s1,"%-22.22s %-11.11s",nam(&ur,ir.user),
  134.        ((ir.flags & INST_FLAGS_MSG_AVAIL) ? str_yes : str_no));
  135.       strncat(s,s1,sizeof(s));
  136.     }
  137.     else {
  138.       if (ir.loc == INST_LOC_DOWN)                   
  139.         sprintf(s1, "9%-34s",get_string(1207));    
  140.       else                                          
  141.         sprintf(s1, "9%-34.34s",get_string(1402)); 
  142.       strncat(s,s1,sizeof(s));
  143.     }
  144.   }
  145.  
  146.   if((ir.loc >= INST_LOC_CH1) && (ir.loc <= INST_LOC_CH10)) {
  147.     sprintf(s1,"%s ",get_stringx(d,55));
  148.     sprintf(s2,"7[1%s7]",stripcolors(channels[ir.loc-INST_LOC_CH1+1].name));
  149.     strncat(s1,s2,sizeof(s1));
  150.   }
  151.   else
  152.   switch (ir.loc) {
  153.     case INST_LOC_DOWN:
  154.       break;
  155.     case INST_LOC_INIT:
  156.       sprintf(s1,"%-25.25s",get_string(1208));
  157.       break;
  158.     case INST_LOC_EMAIL:
  159.       sprintf(s1,"%-25.25s",get_string(1209));
  160.       break;
  161.     case INST_LOC_MAIN:
  162.       sprintf(s1,"%s ",get_string(1210));
  163.       if (so() && (ir.subloc < num_subs)) {
  164.         sprintf(s2,"7[1%s7]", stripcolors(subboards[ir.subloc].name));
  165.         strncat(s1,s2,sizeof(s1));
  166.       }
  167.       break;
  168.     case INST_LOC_XFER:
  169.       sprintf(s1,"%s ",get_string(1211));
  170.         if (so() && (ir.subloc < num_dirs)) {
  171.         sprintf(s2,"7[1%s7]", stripcolors(directories[ir.subloc].name));
  172.     strncat(s1,s2,sizeof(s1));
  173.       }
  174.       break;
  175.     case INST_LOC_CHAINS:
  176.       sprintf(s1,"%s ",get_string(1212));
  177.       if (so() && ir.subloc) {
  178.         sprintf(s2,"7[1%s7]",
  179.                     stripcolors(chains[ir.subloc - 1].description));
  180.         strncat(s1,s2,sizeof(s1));
  181.       }
  182.       break;
  183.     case INST_LOC_NET:
  184.       sprintf(s1,"%-25.25s",get_string(1213));
  185.       break;
  186.     case INST_LOC_GFILES:
  187.       sprintf(s1,"%-25.25s",get_string(1214));
  188.       break;
  189.     case INST_LOC_BEGINDAY:
  190.       sprintf(s1,"%-25.25s",get_string(1215));
  191.       break;
  192.     case INST_LOC_EVENT:
  193.       sprintf(s1,"%-25.25s",get_string(1216));
  194.       break;
  195.     case INST_LOC_CHAT:
  196.       sprintf(s1,"%-25.25s",get_string(1218));
  197.       break;
  198.     case INST_LOC_CHAT2:
  199.       sprintf(s1,"%-25.25s",get_string(1217));
  200.       break;
  201.     case INST_LOC_CHATROOM:
  202.       sprintf(s1,"%-25.25s",get_string(1219));
  203.       break;
  204.     case INST_LOC_LOGON:
  205.       sprintf(s1,"%-25.25s",get_string(1220));
  206.       break;
  207.     case INST_LOC_LOGOFF:
  208.       sprintf(s1,"%-25.25s",get_string(1221));
  209.       break;
  210.     case INST_LOC_FSED:
  211.       sprintf(s1,"%-25.25s",get_string(1222));
  212.       break;
  213.     case INST_LOC_UEDIT:
  214.       sprintf(s1,"%-25.25s",get_string(1223));
  215.       break;
  216.     case INST_LOC_CHAINEDIT:
  217.       sprintf(s1,"%-25.25s",get_string(1224));
  218.       break;
  219.     case INST_LOC_BOARDEDIT:
  220.       sprintf(s1,"%-25.25s",get_string(1225));
  221.       break;
  222.     case INST_LOC_DIREDIT:
  223.       sprintf(s1,"%-25.25s",get_string(1226));
  224.       break;
  225.     case INST_LOC_GFILEEDIT:
  226.       sprintf(s1,"%-25.25s",get_string(1227));
  227.       break;
  228.     case INST_LOC_CONFEDIT:
  229.       sprintf(s1,"%-25.25s",get_string(1228));
  230.       break;
  231.     case INST_LOC_DOS:
  232.       sprintf(s1,"%-25.25s",get_string(1229));
  233.       break;
  234.     case INST_LOC_DEFAULTS:
  235.       sprintf(s1,"%-25.25s",get_string(1230));
  236.       break;
  237.     case INST_LOC_REBOOT:
  238.       sprintf(s1,"%-25.25s",get_string(1231));
  239.       break;
  240.     case INST_LOC_RELOAD:
  241.       sprintf(s1,"%-25.25s",get_string(1232));
  242.       break;
  243.     case INST_LOC_VOTE:
  244.       sprintf(s1,"%-25.25s",get_string(1233));
  245.       break;
  246.     case INST_LOC_BANK:
  247.       sprintf(s1,"%-25.25s",get_string(1234));
  248.       break;
  249.     case INST_LOC_AMSG:
  250.       sprintf(s1,"%-25.25s",get_string(1235));
  251.       break;
  252.     case INST_LOC_SUBS:
  253.       sprintf(s1,"%s ",get_string(1236));
  254.         if (so() && (ir.subloc < num_subs)) {
  255.         sprintf(s2,"7[1%s7]", stripcolors(subboards[ir.subloc].name));
  256.     strncat(s1,s2,sizeof(s1));
  257.       }
  258.       break;
  259.     case INST_LOC_CHUSER:
  260.       sprintf(s1,"%-25.25s",get_string(1237));
  261.       break;
  262.     case INST_LOC_TEDIT:
  263.       sprintf(s1,"%-25.25s",get_string(1238));
  264.       break;
  265.     case INST_LOC_MAILR:
  266.       sprintf(s1,"%-25.25s",get_string(1239));
  267.       break;
  268.     case INST_LOC_RESETQSCAN:
  269.       sprintf(s1,"%-25.25s",get_string(1240));
  270.       break;
  271.     case INST_LOC_VOTEEDIT:
  272.       sprintf(s1,"%-25.25s",get_string(1241));
  273.       break;
  274.     case INST_LOC_VOTEPRINT:
  275.       sprintf(s1,"%-25.25s",get_string(1401));
  276.       break;
  277.     case INST_LOC_RESETF:
  278.       sprintf(s1,"%-25.25s",get_string(1406));
  279.       break;
  280.     case INST_LOC_FEEDBACK:
  281.       sprintf(s1,"%-25.25s",get_string(1407));
  282.       break;
  283.     case INST_LOC_KILLEMAIL:
  284.       sprintf(s1,"%-25.25s",get_string(1408));
  285.       break;
  286.     case INST_LOC_POST:
  287.       sprintf(s1,"%s ",get_string(1409));
  288.       if (so() && (ir.subloc < num_subs)) {
  289.       sprintf(s2,"7[1%s7]", stripcolors(subboards[ir.subloc].name));
  290.     strncat(s1,s2,sizeof(s1));
  291.       }
  292.       break;
  293.     case INST_LOC_NEWUSER:
  294.       sprintf(s1,"%-25.25s",get_string(1423));
  295.       break;
  296.     case INST_LOC_RMAIL:
  297.       sprintf(s1,"%-25.25s",get_string(1424));
  298.       break;
  299.     case INST_LOC_DOWNLOAD:
  300.       sprintf(s1,"%-25.25s",get_string(1425));
  301.       break;
  302.     case INST_LOC_UPLOAD:
  303.       sprintf(s1,"%-25.25s",get_string(1426));
  304.       break;
  305.     case INST_LOC_BIXFER:
  306.       sprintf(s1,"%-25.25s",get_string(1427));
  307.       break;
  308.     case INST_LOC_NETLIST:
  309.       sprintf(s1,"%-25.25s",get_string(1428));
  310.       break;
  311.     case INST_LOC_TERM:
  312.       sprintf(s1,"%-25.25s",get_string(1519));
  313.       break;
  314.     case INST_LOC_QWK:
  315.       sprintf(s1,"%-25.25s",get_string(1639));
  316.       break;
  317.     case INST_LOC_GETUSER:
  318.       sprintf(s1,"%-25.25s",get_string(1640));
  319.       break;
  320.     case INST_LOC_WFC:
  321.       break;
  322.     default:
  323.       sprintf(s1,"%-25.25s",get_string(1403));
  324.       break;
  325.   }
  326.   strncat(s,s1,sizeof(s));
  327.   strcpy(ss,s);
  328.   if(ir.flags & INST_FLAGS_INVIS) 
  329.     if(so()) {
  330.       read_user(ir.user,&ur);
  331.       sprintf(ss,"1%-3d1%-34.34s%-25.25s",wi,nam(&ur,ir.user),
  332.                  "6Invisible");
  333.     } else sprintf(ss, "1%-3d9%-34.34s%-25.25s", wi, get_string(1402),
  334.                         get_string(1402));
  335. }
  336.  
  337. /****************************************************************************/
  338.  
  339. void multi_instance(void)
  340. {
  341.   char s[161];
  342.   char hold = '─'; 
  343.   int i1,ni;
  344.  
  345.   nl();
  346.   if(!okansi()) hold = '-';
  347.   npr("1#  O9nline 1U9ser%s1A9vailable  1A9ctivity\n\r7",
  348.        charstr(12, ' '));
  349.   npr("%s\n\r", charstr(thisuser.screenchars - 1, hold));
  350.   ni=num_instances();
  351.   if (ni<1) {
  352.     ansic(6);
  353.     pl(get_string(1205));
  354.     return;
  355.   }
  356.   for (i1=1;i1<=ni;i1++) {
  357.     make_inst_str(i1,s);
  358.     if(strlen(stripcolors(s)) >= thisuser.screenchars)
  359.       strcpy(s - 4 + thisuser.screenchars +
  360.              (strlen(s) - strlen(stripcolors(s))), "7]\0");
  361.     if (E_C) {
  362.       pl(s);
  363.     } else {
  364.       pl(stripcolors(s));
  365.     }
  366.   }
  367. }
  368.  
  369.          Save MULTINST.C
  370.  
  371. Step 5:  Open COM.C
  372.  
  373.          Locate and add the following code in nl();
  374.  
  375. ==  else
  376. ==    outstr("\r\n");
  377. --  if (inst_msg_waiting())
  378. ++  if (inst_msg_waiting() && !chatline)
  379. ==    process_inst_msgs();
  380. ==}
  381.  
  382.          Locate and add the following code in skey1():
  383.  
  384. ==      case 18:
  385. ==        if (echo)
  386. ==          reprint();
  387. ==        break;
  388. ++      case 12: /* CTRL - L */
  389. ++        if(so())
  390. ++        toggle_invis();
  391. ++        break;
  392. ++      case 14: /* CTRL - N */
  393. ++        toggle_avail();
  394. ++        break;
  395. ==      case 25:
  396.  
  397.          Locate and add the following code in input1():
  398.  
  399. ==  while (!done && !hangup) {
  400. ==    ch = getkey();
  401. ++    if(curpos) chatline=1; 
  402. ++    else chatline=0; 
  403. ==    if (in_ansi) {
  404. ==      if ((in_ansi==1) && (ch!='['))
  405.  
  406.          Save COM.C
  407.  
  408. Step 6:  Open VARS.H
  409.  
  410.          Make appropriate changes:
  411.  
  412. == #include "os2lib.h"
  413. == #endif
  414. ==
  415. == #include "fcns.h"
  416. ++ #include "wmchat.h"
  417.  
  418.          Skipping down some..
  419.  
  420. == __EXTRN__ unsigned short com_speed, *csn_index, crc, *gat, modem_flag,
  421. ==                          modem_mode, modem_speed, net_sysnum, curloc, eflags;
  422. ==
  423. ++ #include "wmvars.h";
  424. ++
  425. == __EXTRN__ unsigned int subconfnum, dirconfnum;
  426.  
  427.          Save VARS.H
  428.  
  429. Step 7:  Open LILO.C
  430.  
  431.          In function logon(), make appropriate changes:
  432.  
  433. ==          }
  434. ==        }
  435. ==        topscreen();
  436. ==        create_chain_file();
  437. ++        avail=1;
  438. ==        rsm(usernum,&thisuser,1);
  439.  
  440.          Skipping down some...
  441.  
  442. ==        prt(3,get_string(378));
  443. ==        nl();
  444. ==  }
  445. ++  if (((incom) || (sysop1())) && (thisuser.sl < 255)) {
  446. ++        sprintf(s, "%s %s", thisuser.name, get_string(1172));
  447. ++        broadcast(s);
  448. ++  }
  449. --  if ((incom) || (sysop1()))
  450. --        broadcast(get_string(1172));
  451. ==  setiia(90);
  452.  
  453.          Skipping down some more (function logoff())...
  454.  
  455. ==  if (usernum>0) {
  456. ++    if (((incom) || (sysop1())) && (thisuser.sl < 255)) {
  457. ++        sprintf(s, "%s %s", thisuser.name, get_string(1173));
  458. ++        broadcast(s);
  459. ++    }
  460. --        if ((incom) || (sysop1()))
  461. --          broadcast(get_string(1173));
  462. ==  }
  463. ==  setiia(90);
  464.  
  465.          Save LILO.C
  466.  
  467. Step 8: Open BBSUTL1.C
  468.  
  469.          In function write_instance(), make the following changes:
  470.  
  471. ==  if (useron) {
  472. ==    cf |= INST_FLAGS_ONLINE;
  473. ++    if (invis) cf |= INST_FLAGS_INVIS;
  474. ==    if (!(thisuser.sysstatus & sysstatus_no_msgs)) {
  475.  
  476.          Skipping down some...
  477.  
  478. ==        case INST_LOC_EMAIL:
  479. ==        case INST_LOC_CHATROOM:
  480. ==        case INST_LOC_RMAIL:
  481. ++          if(avail) 
  482. ==          cf |= INST_FLAGS_MSG_AVAIL;
  483. ==          break;
  484. ++        default:
  485. ++          if ((loc >= INST_LOC_CH1) && (loc <= INST_LOC_CH10) && avail)
  486. ++          cf |= INST_FLAGS_MSG_AVAIL;
  487. ++          break;
  488. ==      }
  489. --    } else if (loc == INST_LOC_CHATROOM) {
  490. --      cf |= INST_FLAGS_MSG_AVAIL;
  491. ==    }
  492. ==    if (using_modem)
  493.  
  494.           Skipping down some...
  495.  
  496. ==      ti.flags |= flags;
  497. ==    }
  498. ==  }
  499. ==  
  500. ++    if((ti.flags & INST_FLAGS_INVIS) && (!invis)) {
  501. ++      cf = 0;
  502. ++      if (ti.flags & INST_FLAGS_ONLINE) cf |= INST_FLAGS_ONLINE;
  503. ++      if (ti.flags & INST_FLAGS_MSG_AVAIL) cf |= INST_FLAGS_MSG_AVAIL;
  504. ++      re_write = 1;
  505. ++    }
  506. ++
  507. ==  if (cf!=ti.flags) 
  508.  
  509.          Skipping down some more...
  510.  
  511. ==    re_write=1;
  512. ==    ti.loc=loc;
  513. ==  }
  514. ==
  515. ++  if((((ti.flags & INST_FLAGS_INVIS) && (!invis)) ||
  516. ++     ((!(ti.flags & INST_FLAGS_INVIS)) && (invis))) ||
  517. ++     (((ti.flags & INST_FLAGS_MSG_AVAIL) && (!avail)) ||
  518. ++     ((!(ti.flags & INST_FLAGS_MSG_AVAIL)) && (avail))) &&
  519. ++     (ti.loc!=INST_LOC_WFC)) re_write=1;
  520. ++
  521. ==  if (re_write) {
  522.  
  523.          Save BBSUTL1.C
  524.  
  525. Step 9: Open UTILITY.C
  526.  
  527.         Locate this code in frequent_init(), add marked line:
  528.  
  529. ==   set_x_only(0, NULL, 0);
  530. ==   set_net_num(0);
  531. ==   set_language(thisuser.language);
  532. ==   tmp_disable_conf(-1);
  533. ++   invis=0;
  534. == }
  535.  
  536.          Locate this code in giveup_timeslice(), add marked line:
  537.  
  538. ==    /* delay(17); */
  539. ==  }
  540. ==#endif
  541. ++  if ((!in_chatroom) || (!chatline)) 
  542. ==  if (inst_msg_waiting())
  543. ==    process_inst_msgs();
  544.  
  545.          Save UTILITY.C
  546.  
  547. Step 10: Open MAKEFILE.MAK
  548.  
  549.    READ THIS! READ THIS! READ THIS! BE CAREFUL! VERY IMPORTANT! READ THIS! 
  550.  
  551. ---->     If you are using BORLAND C++, make the following changes.      <----
  552. ---->     Otherwise proceed down to the instructions for Turbo C++.      <----
  553.           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  554. == BBS_OVL = \
  555. ==         batch.obj    bbsovl1.obj  bbsovl2.obj  bbsovl3.obj  \
  556. ==         chnedit.obj  conf.obj     defaults.obj diredit.obj  \
  557. ==         extrn1.obj   gfiles.obj   gfledit.obj  ini.obj      \
  558. ==         instmsg.obj  lilo.obj     misccmd.obj  multinst.obj \
  559. ==         multmail.obj netsup.obj   newuser.obj  qwk.obj      \
  560. ==         qwk1.obj     readmail.obj ripovl.obj   sr.obj       \
  561. ==         srrcv.obj    srsend.obj   subedit.obj  subreq.obj   \
  562. ==         subxtr.obj   sysopf.obj   tedit.obj    uedit.obj    \
  563. ==         voteedit.obj xferovl.obj  xferovl2.obj xfertmp.obj  \
  564. --         xinit.obj
  565. ++         xinit.obj    wmchat.obj
  566. ==
  567. == BBS_O_OVL = \
  568. ==         $(OBJ)\batch.obj    $(OBJ)\bbsovl1.obj  $(OBJ)\bbsovl2.obj  \
  569. ==         $(OBJ)\bbsovl3.obj  $(OBJ)\chnedit.obj  $(OBJ)\conf.obj     \
  570. ==         $(OBJ)\defaults.obj $(OBJ)\diredit.obj  $(OBJ)\extrn1.obj   \
  571. ==         $(OBJ)\gfiles.obj   $(OBJ)\gfledit.obj  $(OBJ)\ini.obj      \
  572. ==         $(OBJ)\instmsg.obj  $(OBJ)\lilo.obj     $(OBJ)\misccmd.obj  \
  573. ==         $(OBJ)\multinst.obj $(OBJ)\multmail.obj $(OBJ)\netsup.obj   \
  574. ==         $(OBJ)\newuser.obj  $(OBJ)\qwk.obj      $(OBJ)\qwk1.obj     \
  575. ==         $(OBJ)\readmail.obj $(OBJ)\ripovl.obj   $(OBJ)\sr.obj       \
  576. ==         $(OBJ)\srrcv.obj    $(OBJ)\srsend.obj   $(OBJ)\subedit.obj  \
  577. ==         $(OBJ)\subreq.obj   $(OBJ)\subxtr.obj   $(OBJ)\sysopf.obj   \
  578. ==         $(OBJ)\tedit.obj    $(OBJ)\uedit.obj    $(OBJ)\voteedit.obj \
  579. ==         $(OBJ)\xferovl.obj  $(OBJ)\xferovl2.obj $(OBJ)\xfertmp.obj  \
  580. --         $(OBJ)\xinit.obj
  581. ++         $(OBJ)\xinit.obj    $(OBJ)\wmchat.obj
  582.  
  583.    READ THIS! READ THIS! READ THIS! BE CAREFUL! VERY IMPORTANT! READ THIS! 
  584.  
  585. ---->   If you are using TURBO C++, make following change.  Otherwise    <----
  586. ---->   proceed to step 11.                                              <----
  587.         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  588. == BBS_OVL = \
  589. ==        $(OBJ)newuser.obj $(OBJ)sysopf.obj $(OBJ)voteedit.obj\
  590. ==        $(OBJ)gfledit.obj $(OBJ)tedit.obj $(OBJ)chnedit.obj\
  591. ==        $(OBJ)uedit.obj $(OBJ)diredit.obj $(OBJ)subedit.obj\
  592. ==        $(OBJ)xferovl.obj $(OBJ)multmail.obj $(OBJ)gfiles.obj\
  593. ==        $(OBJ)defaults.obj $(OBJ)misccmd.obj $(OBJ)xinit.obj\
  594. ==        $(OBJ)xfertmp.obj $(OBJ)batch.obj $(OBJ)srrcv.obj\
  595. ==        $(OBJ)srsend.obj $(OBJ)lilo.obj $(OBJ)subreq.obj\
  596. ==        $(OBJ)netsup.obj $(OBJ)subxtr.obj $(OBJ)multinst.obj\
  597. ==        $(OBJ)conf.obj $(OBJ)readmail.obj $(OBJ)instmsg.obj\
  598. ==        $(OBJ)bbsovl1.obj $(OBJ)extrn1.obj $(OBJ)bbsovl2.obj\
  599. ==        $(OBJ)sr.obj $(OBJ)ini.obj $(OBJ)xferovl2.obj\
  600. ==        $(OBJ)bbsovl3.obj $(OBJ)qwk.obj $(OBJ)qwk1.obj\
  601. --        $(OBJ)ripovl.obj
  602. ++        $(OBJ)ripovl.obj $(OBJ)wmchat.obj
  603.  
  604.           Save MAKEFILE.MAK
  605.  
  606. Step 11:  Open MMENU.C
  607.  
  608.           Make appropriate changes to mainmenu():
  609.  
  610. ==      extern_prog(s1, sysinfo.spawn_opts[8]);
  611. ==    } else
  612. --    chat_room();
  613. ++    wmchat();
  614. ==  }
  615. ==  if (strcmp(s,"/Z")==0) {
  616.  
  617. Step 12:  Open BBSUTL.C
  618.  
  619.           Add the marked line to set_language_1():
  620.  
  621. ==  set_strings_fn(2, languagedir, "YES.STR", 0);
  622. ==  set_strings_fn(3, languagedir, "NO.STR", 0);
  623. ++  set_strings_fn(wmchat_str, languagedir, "WMCHAT.STR", 0);
  624.  
  625.           Save BBSUTL.C
  626.  
  627. Step 13:  Open BBS.C
  628.  
  629.           Add this line in function main():
  630.  
  631. ==  } else {
  632. ==    instance=1;
  633. ==  }
  634. ++  set_wmstr();
  635. ==  already_on=0;
  636. ==  endday=0;
  637. ==  oklevel=0;
  638.  
  639.           Save BBS.C
  640.  
  641. Step 14:  Copy WMCHAT.OBJ into your OBJ directory (normally in a
  642.           sub-directory of your source code's directory.)
  643.  
  644. Step 15:  Copy WMCHAT.H and WMVARS.H to your source code directory.
  645.  
  646. Step 16:  Copy WMCHAT.INI to your WWIV BBS directory.
  647.           WMCHAT_STR in your WMCHAT.INI file controls what number the
  648.           WMCHAT.STR file is assigned.  It defaults at 5.  If you have
  649.           another STR file set to 5, be sure to adjust this value
  650.           immediately!
  651.  
  652. Step 17:  Copy WMCHAT.STR to your BBS language directory (usually GFILES).
  653.           If you use multiple languages, be sure to copy WMCHAT.STR to ALL
  654.           the directories.
  655.  
  656. Step 18:  Copy WMCHAT.ANS and WMCHAT.MSG into your GFILES directory.
  657.  
  658. Step 19:  Recompile!
  659.  
  660.           A tip -- you no longer need the internal WWIV chatroom, you may
  661.           wish to delete it to save memory.
  662.